package model;

import model.persistencia.BancoDeDados;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.view.JasperViewer;

public class Relatorio {
    
    public Relatorio() {
    }
    
    public void relatorioAcervo() throws Exception{
        BancoDeDados db = new BancoDeDados();
        Connection con = db.getConexao();
        Statement stm = con.createStatement();
        String sql = "SELECT livro.`cod_livro`, livro.`titulo`, livro.`autor`,  livro.`isbn`, livro.`status_livro` FROM  `livro` livro;";
        ResultSet rs = stm.executeQuery(sql);
        
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        Map parameters = new HashMap();
        JasperFillManager.fillReportToFile("relatorios/classicAcervo.jasper",parameters,jrRS);
        JasperExportManager.exportReportToPdfFile("relatorios/classicAcervo.jrprint");
        JasperViewer.viewReport("relatorios/classicAcervo.jrprint",false,false);
    }    
    
    public void relatorioAcervoEmprestados() throws Exception{
        BancoDeDados db = new BancoDeDados();
        Connection con = db.getConexao();
        Statement stm = con.createStatement();
        String sql = "SELECT     livros_emprestados.`data_emp`,     livros_emprestados.`data_prev_dev`,     livros_emprestados.`status_emp`,     livros_emprestados.`cod_livro`,     livros_emprestados.`titulo`,     livros_emprestados.`isbn`  FROM     `livros_emprestados` livros_emprestados;";
        ResultSet rs = stm.executeQuery(sql);
        
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        Map parameters = new HashMap();
        JasperFillManager.fillReportToFile("relatorios/classicAcervoEmprestados.jasper",parameters,jrRS);
        JasperExportManager.exportReportToPdfFile("relatorios/classicAcervoEmprestados.jrprint");
        JasperViewer.viewReport("relatorios/classicAcervoEmprestados.jrprint",false,false);
    }
    
    public void relatorioAcervoReservados() throws Exception{
        BancoDeDados db = new BancoDeDados();
        Connection con = db.getConexao();
        Statement stm = con.createStatement();
        String sql = "SELECT     livros_reservados.`cod_livro`,     livros_reservados.`titulo`,     livros_reservados.`autor`,     livros_reservados.`isbn`,     livros_reservados.`data_res`,     livros_reservados.`data_prev_conclusao` FROM     `livros_reservados` livros_reservados";
        ResultSet rs = stm.executeQuery(sql);
        
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        Map parameters = new HashMap();
        JasperFillManager.fillReportToFile("relatorios/classicAcervoReservados.jasper",parameters,jrRS);
        JasperExportManager.exportReportToPdfFile("relatorios/classicAcervoReservados.jrprint");
        JasperViewer.viewReport("relatorios/classicAcervoReservados.jrprint",false,false);
    }    
    
    public void relatorioEmprestimos() throws Exception{
        BancoDeDados db = new BancoDeDados();
        Connection con = db.getConexao();
        Statement stm = con.createStatement();
        String sql = "SELECT     livro.`titulo`,     leitor.`nome`,     emprestimo.`data_emp`,     emprestimo.`data_prev_dev`,     emprestimo.`status_emp` FROM     `leitor` leitor INNER JOIN `emprestimo` emprestimo ON leitor.`cod_leitor` = emprestimo.`leitor_cod_leitor`     INNER JOIN `livro` livro ON emprestimo.`livro_cod_livro` = livro.`cod_livro` WHERE     emprestimo.status_emp = 'Ativo' or emprestimo.status_emp = 'Atrasado';";
        ResultSet rs = stm.executeQuery(sql);
        
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        Map parameters = new HashMap();
        JasperFillManager.fillReportToFile("relatorios/classicEmprestimos.jasper",parameters,jrRS);
        JasperExportManager.exportReportToPdfFile("relatorios/classicEmprestimos.jrprint");
        JasperViewer.viewReport("relatorios/classicEmprestimos.jrprint",false,false);
    }    
    
    public void relatorioEmprestimosEmAtraso() throws Exception{
        BancoDeDados db = new BancoDeDados();
        Connection con = db.getConexao();
        Statement stm = con.createStatement();
        String sql = "SELECT     livro.`titulo`,     leitor.`nome`,     emprestimo.`data_emp`,     emprestimo.`data_prev_dev`,     emprestimo.`status_emp` FROM     `leitor` leitor INNER JOIN `emprestimo` emprestimo ON leitor.`cod_leitor` = emprestimo.`leitor_cod_leitor`     INNER JOIN `livro` livro ON emprestimo.`livro_cod_livro` = livro.`cod_livro` WHERE     emprestimo.status_emp = 'Atrasado'";
        ResultSet rs = stm.executeQuery(sql);
        
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        Map parameters = new HashMap();
        JasperFillManager.fillReportToFile("relatorios/classicEmprestimosAtrasados.jasper",parameters,jrRS);
        JasperExportManager.exportReportToPdfFile("relatorios/classicEmprestimosAtrasados.jrprint");
        JasperViewer.viewReport("relatorios/classicEmprestimosAtrasados.jrprint",false,false);
    }    

    public void relatorioLeitores() throws Exception{
        BancoDeDados db = new BancoDeDados();
        Connection con = db.getConexao();
        Statement stm = con.createStatement();
        String sql = "SELECT     leitor.`cod_leitor`,     leitor.`nome`,     leitor.`rg`,     leitor.`telefone`,     turma.`nome_turma`,     curso.`nome_curso`,     leitor.`status_leitor` FROM     `turma` turma INNER JOIN `leitor` leitor ON turma.`cod_turma` = leitor.`turma_cod_turma`     INNER JOIN `curso` curso ON leitor.`curso_cod_curso` = curso.`cod_curso`";
        ResultSet rs = stm.executeQuery(sql);
        
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        Map parameters = new HashMap();
        JasperFillManager.fillReportToFile("relatorios/classicLeitores.jasper",parameters,jrRS);
        JasperExportManager.exportReportToPdfFile("relatorios/classicLeitores.jrprint");
        JasperViewer.viewReport("relatorios/classicLeitores.jrprint",false,false);
    }    
    
    public void relatorioLeitoresPendentes() throws Exception{
        BancoDeDados db = new BancoDeDados();
        Connection con = db.getConexao();
        Statement stm = con.createStatement();
        String sql = "SELECT     leitor.`cod_leitor`,     leitor.`nome`,     leitor.`rg`,     leitor.`telefone`,     turma.`nome_turma`,     curso.`nome_curso`,     leitor.`status_leitor` FROM     `turma` turma INNER JOIN `leitor` leitor ON turma.`cod_turma` = leitor.`turma_cod_turma`     INNER JOIN `curso` curso ON leitor.`curso_cod_curso` = curso.`cod_curso` where status_leitor = 'Atrasado' or status_leitor = 'Bloqueado'";
        ResultSet rs = stm.executeQuery(sql);
        
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        Map parameters = new HashMap();
        JasperFillManager.fillReportToFile("relatorios/classicLeitoresPendentes.jasper",parameters,jrRS);
        JasperExportManager.exportReportToPdfFile("relatorios/classicLeitoresPendentes.jrprint");
        JasperViewer.viewReport("relatorios/classicLeitoresPendentes.jrprint",false,false);
    }    
    
    public void relatorioReserva() throws Exception{
        BancoDeDados db = new BancoDeDados();
        Connection con = db.getConexao();
        Statement stm = con.createStatement();
        String sql = "SELECT     livro.`titulo`,     leitor.`nome`,     reserva.`data_res`,     reserva.`data_prev_conclusao`,     reserva.`status_res` FROM     `livro` livro INNER JOIN `reserva` reserva ON livro.`cod_livro` = reserva.`livro_cod_livro`     INNER JOIN `leitor` leitor ON reserva.`leitor_cod_leitor` = leitor.`cod_leitor`";
        ResultSet rs = stm.executeQuery(sql);
        
        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
        Map parameters = new HashMap();
        JasperFillManager.fillReportToFile("relatorios/classicReservas.jasper",parameters,jrRS);
        JasperExportManager.exportReportToPdfFile("relatorios/classicReservas.jrprint");
        JasperViewer.viewReport("relatorios/classicReservas.jrprint",false,false);
    }    
        

}











